package combat.protocol.interfaces;

import java.io.Serializable;
import java.util.ArrayList;

import combat.protocol.data.RemoteList;
import combat.protocol.types.VehicleType;

public interface VehicleInt extends PhysicalObjectInt, Serializable {

	public double getFuel();
	public void setFuel(double fuel);

	public int getHealth();
	public void setHealth(int health);

	public Boolean getLocked();
	public void setLocked(Boolean locked);
	// Helpers
	public void lock(); // setLocked(true);
	public void unlock(); // setLocked(false);

	public ArrayList<OnboardSystemInt> getOnboardSystems();
	public RemoteList getOnboardSystems_Remote(); // ArrayList<OnboardSystemInt>
	public void setOnboardSystems(ArrayList<OnboardSystemInt> onboardSystems);

	public ArrayList<OrderInt> getOrders();
	public RemoteList getOrders_Remote(); // ArrayList<OrderInt>
	public void setOrders(ArrayList<OrderInt> orders);

	public VehicleType getVehicleType();
	public void setVehicleType(VehicleType vehicleType);

	// ------------------------------------------

	public void orderMove(int orderID, Object target, int speed); // Creates new move order
	public void orderAttack(int orderID, Object target, OnboardWeaponSystemInt system); // Creates new attack order
	public void orderCancel(OrderInt order); // Cancels existing order

}
